﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using DAO;
using Domain;
using Microsoft.Practices.EnterpriseLibrary.Validation;

public partial class EmpAdminPanel : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        iu_ctrl.SubidaCompletada_Event += new imgUpload.SubidaCompletada(SubidaCompletada);

        if (!IsPostBack)
        {
            CargarRubros();
            cargarDatos();
        }
    }
    public void SubidaCompletada(Imagen img)
    {
        ul_mensajes.InnerHtml = string.Empty;

        if (img == null)
        {
            ul_mensajes.InnerHtml += "<li class='itemerror'>" + "Ocurrio un inconveniente. Intente nuevamente mas tarde" + "</li>";
            return;
        }

        Empresa emp = (Empresa)Utils.operadorLogueado;

        emp.Logo = img.id;
        if (!EmpresaDAO.Guardar(emp))
        {
            ul_mensajes.InnerHtml += "<li class='itemerror'>" + "Ocurrio un inconveniente. Intente nuevamente mas tarde" + "</li>";
            return;
        }
        cargarDatos();
    }

    private void cargarDatos()
    {
        Empresa e = (Empresa)Utils.operadorLogueado;
        lbl_cuit.Text = e.UserName.ToString("00-00000000-0");
        txt_pass.Text = e.Password;
        txt_mail.Text = e.EMail;
        txt_razon.Text = e.RazonSocial;
        ddl_Rubro.SelectedIndex = ddl_Rubro.Items.IndexOf(ddl_Rubro.Items.FindByValue(e.Rubro));
        img_logo.ImageUrl = Utils.imageHandlerPath(e.Logo, e is Empresa);
        txt_latitud.Text = e.Lat.HasValue ? e.Lat.Value.ToString() : string.Empty;
        txt_longitud.Text = e.Long.HasValue ? e.Long.Value.ToString() : string.Empty;
        if (!e.Lat.HasValue)
        {
            img_location.Visible = false;
        }
        else
        {
            img_location.Visible = true;
            img_location.Src = string.Format(img_location.Attributes["formatlocation"], e.Lat.Value.ToString().Replace(',', '.') + ", " + e.Long.Value.ToString().Replace(',', '.'));
        }
        
    }
    protected void btn_guardar_Click(object sender, EventArgs e)
    {
        ul_mensajes.InnerHtml = string.Empty;
        double latitud = 0;
        double longitud = 0;

        if (ddl_Rubro.SelectedIndex == 0)
        {
            ul_mensajes.InnerHtml += "<li class='itemerror'>" + "Debe seleccionar un rubro" + "</li>";
            return;
        }

        if (!string.IsNullOrEmpty(txt_latitud.Text) &&
            !double.TryParse(txt_latitud.Text.Replace(System.Globalization.NumberFormatInfo.CurrentInfo.CurrencyGroupSeparator, 
                                                      System.Globalization.NumberFormatInfo.CurrentInfo.CurrencyDecimalSeparator), out latitud))
        {
            ul_mensajes.InnerHtml += "<li class='itemerror'>" + "La latitud ingresada es inválida" + "</li>";
            return;
        }

        if (!string.IsNullOrEmpty(txt_longitud.Text) &&
            !double.TryParse(txt_longitud.Text.Replace(System.Globalization.NumberFormatInfo.CurrentInfo.CurrencyGroupSeparator,
                                                      System.Globalization.NumberFormatInfo.CurrentInfo.CurrencyDecimalSeparator), out longitud))
        {
            ul_mensajes.InnerHtml += "<li class='itemerror'>" + "La longitud ingresada es inválida" + "</li>";
            return;
        }

        Empresa emp = new Empresa(Utils.operadorLogueado.UserName,
                                txt_pass.Text,
                                txt_mail.Text,
                                ((Empresa)Utils.operadorLogueado).Logo,
                                txt_razon.Text,
                                ddl_Rubro.Text,
                                ((Empresa)Utils.operadorLogueado).Publicaciones,
                                string.IsNullOrEmpty(txt_latitud.Text) ? (double?)null : latitud,
                                string.IsNullOrEmpty(txt_longitud.Text) ? (double?)null : longitud);

        ValidationResults validaciones = Validation.Validate(emp);
        if (validaciones.Count() != 0)
        {
            foreach (ValidationResult v in validaciones)
            {
                ul_mensajes.InnerHtml += "<li class='itemerror'>" + v.Message + "</li>";
            }

            return;
        }

        emp.db4oid = Utils.operadorLogueado.db4oid;
        if (!EmpresaDAO.Guardar(emp))
        {
            ul_mensajes.InnerHtml += "<li class='itemerror'>" + "Ocurrio un inconveniente. Intente nuevamente mas tarde" + "</li>";
            return;
        }
        Utils.operadorLogueado = emp;

        ul_mensajes.InnerHtml += "<li class='itemok'>" + "Se guardaron los datos correctamente" + "</li>";
        cargarDatos();


    }
    private void CargarRubros() {
        string[] rubros = ConfigurationManager.AppSettings["rubros"].ToString().Split('|');
        ddl_Rubro.DataSource = rubros;
        ddl_Rubro.DataBind();
    }
}
